home *** CD-ROM | disk | FTP | other *** search
/ Amiga CD-ROM Collection / Amiga CD-ROM Collection - Auge 4000 and Cactus and Demo Util.iso / cactus / 01 / basicprg's / superhirn < prev    next >
Text File  |  1988-04-30  |  6KB  |  317 lines

  1. Start:
  2. CLEAR
  3.  
  4.  
  5.  
  6.  CLS
  7.  PRINT "*************"
  8.  PRINT "* Superhirn *"
  9.  PRINT "*************"
  10.  PRINT
  11.  PRINT "Ein Spiel von Freddy Weichert !!!"
  12.  
  13. REM          Falls Dir das Prg. gut gefaellt ueberweise 5,-DM an
  14. REM          Friedhelm Weichert
  15. REM          Kontonummer: 482125   Bankleitzahl: 31251350
  16. REM                     Kreissparkasse Grevenbroich
  17. PRINT
  18.  PRINT " 1 = Nur verschiedene Farben"
  19.  PRINT " 2 = Mit doppelten Farben"
  20.  PRINT 
  21.  INPUT "Welchen Schwierigkeitsgrad waehlen Sie ";schwierigkeit
  22.  LOCATE 20,20
  23.  PRINT "Zum Spielen druecken Sie bitte eine Taste."
  24.  GOSUB WarteTaste
  25.  
  26.  
  27.  BeginnSpiel:
  28.  versuch=1
  29.  
  30.   SCREEN 1,320,200,5,1
  31.  WINDOW 2,"Superhirn",,2,1
  32.  
  33.  REM //////////////////      Festlegen der Farben     ////////////////
  34.  PRINT " 1=   2=   3=   4=   5=   6="
  35.  FOR i=1 TO 9
  36.  ON i GOSUB rot,blau,gruen,violett,grau,braun,schwarz,weiss,schwarz
  37.  IF i<7 THEN
  38.  LINE (i*10+(i*30-10),0)-(10+(i*10+(i*30-10)),10),i+3,bf
  39.  END IF
  40.  NEXT i
  41.  
  42.  REM /////////////////     Auswahl des Codes      ////////////////////
  43.  
  44.  Auswahlcode:
  45.  
  46.  RANDOMIZE TIMER
  47.  
  48.  FOR i=1 TO 4
  49.  code(i)=INT(RND*6+1)
  50.  IF schwierigkeit=1 THEN
  51.     IF i>1 THEN
  52.        FOR j=1 TO i-1
  53.        IF code(i)=code(j) THEN Auswahlcode
  54.        NEXT j
  55.     END IF
  56.  END IF      
  57. REM ///////// PRINT code(i);
  58.  NEXT i
  59.  
  60.  Auswahl:
  61.  LOCATE 21,20
  62.  PRINT versuch ".Auswahl";:INPUT Auswahl$
  63.  FOR i=1 TO 4
  64.  aus(i)=VAL(MID$(Auswahl$,i,1))
  65.  IF aus(i)<1 OR aus(i)>6 THEN
  66.     LOCATE 22,20
  67.     PRINT "Falsche Eingabe!"
  68.     GOSUB WarteTaste
  69.     LOCATE 21,20
  70.     PRINT "                  "
  71.     LOCATE 22,20
  72.     PRINT "                  "
  73.     GOTO Auswahl
  74.  END IF
  75.  NEXT i
  76.  
  77.  
  78.  REM //////////////////////////   Routine zur Feststellung ob doppelt //////
  79.  doppelt=0
  80.  doppelmerker=0
  81.  q=0
  82.  FOR i= 1 TO 4                           
  83.  FOR j= 1 TO 4
  84.  IF code(i)=code(j) THEN
  85.     doppelt=doppelt+1
  86.     doppelmerker=doppelmerker+1
  87.  END IF   
  88.  NEXT j
  89.  IF doppelmerker > 1 THEN
  90.      q=q+1
  91.     doppelmerkercode(q)=code(i)
  92.     doppelmerker=0
  93.  END IF   
  94.  
  95.  NEXT i
  96.  IF doppelt=4 THEN doppelt=1
  97.  IF doppelt=6 THEN doppelt=2
  98.  IF doppelt=10 THEN doppelt=3
  99.  IF doppelt=16 THEN doppelt=4
  100.  IF doppelt=8 THEN doppelt=5
  101.  
  102.  doppeltaus=0
  103.  doppelmerkeraus=0
  104.  r=0
  105.  FOR i= 1 TO 4                           
  106.  FOR j= 1 TO 4
  107.  IF aus(i)=aus(j) THEN
  108.     doppeltaus=doppeltaus+1
  109.     doppelmerkeraus=doppelmerkeraus+1
  110.  END IF   
  111.  NEXT j
  112.  IF doppelmerkeraus > 1 THEN
  113.      r=r+1
  114.     doppelmerkerzahl(r)=aus(i)
  115.     doppelmerkeraus=0
  116.  END IF   
  117.  NEXT i
  118.  IF doppeltaus=4 THEN doppeltaus=1
  119.  IF doppeltaus=6 THEN doppeltaus=2
  120.  IF doppeltaus=10 THEN doppeltaus=3
  121.  IF doppeltaus=16 THEN doppeltaus=4
  122.  IF doppeltaus=8 THEN doppeltaus=5
  123.  
  124.  
  125.  
  126.  REM ////////////////////////////    Darstellung der Farben   /////////////
  127.  ver=versuch+1
  128.  FOR i=1 TO 4
  129.  
  130.  
  131.  LINE (i*10+(i*20-12),ver/1.58*10+(ver/2*20-12))-(10+(i*10+(i*20-12)),10+(ver/1.58*10+(ver/2*20-12))),aus(i)+3,bf
  132.  NEXT i
  133.  
  134.  REM ///////////////////////////     Auswahl Schwarz/Weiss   //////////////
  135.  
  136.  weiss=0
  137.  schwarz=0
  138.  FOR i= 1 TO 4
  139.  FOR j= 1 TO 4
  140.      IF aus(j)=code(i) THEN
  141.      weiss=weiss+1
  142.      merker=merker+1
  143.        IF i=j THEN
  144.           weiss=weiss-1
  145.           merker=merker-1
  146.           schwarz=schwarz+1
  147.           merker2=merker2+1
  148.        END IF
  149.      END IF
  150.  NEXT j
  151.  IF schwierigkeit=1 AND  merker > 1 THEN
  152.     IF merker2=1 THEN weiss=weiss-merker   
  153.  END IF
  154.  
  155. IF doppeltaus=4 THEN weiss=0
  156.     
  157.  merker=0
  158.  merker2=0  
  159.  NEXT i
  160.        IF doppelt=2 THEN
  161.           IF doppeltaus=1 THEN
  162.              weiss=weiss-1
  163.           END IF   
  164.        END IF
  165.        IF doppeltaus=2 THEN
  166.          IF doppelt=2 THEN
  167.             weiss=weiss-2
  168.          END IF
  169.          IF doppelt=3 THEN
  170.             weiss=weiss-4
  171.          END IF
  172.          IF doppelt=4 THEN
  173.             weiss=weiss-6
  174.          END IF
  175.        END IF  
  176.        IF doppeltaus=3 THEN
  177.           IF doppelt=2 THEN
  178.              weiss=weiss-4
  179.           END IF
  180.           IF doppelt=3 THEN
  181.              weiss=weiss-6
  182.           END IF
  183.           IF doppelt=4 THEN
  184.              weiss=weiss-9
  185.           END IF
  186.        END IF
  187.        IF doppeltaus=4 THEN
  188.        weiss=0
  189.        END IF
  190.        IF doppeltaus=5 THEN
  191.           IF doppelt=1 THEN
  192.              weiss=weiss-2
  193.           END IF
  194.           IF doppelt=2 THEN
  195.              weiss=weiss-3
  196.              IF schwierigkeit=1 THEN weiss=weiss+1
  197.           END IF   
  198.        END IF   
  199.              
  200.  
  201.  
  202.  REM ////////////////////// Grafische Darstellung Schwarz/Weiss ///////
  203.  
  204.  FOR i=1 TO weiss
  205.  CIRCLE (140+(i*10+(i*20-12)),ver/1.58*10+(ver/2*20-12)+5),5,1
  206.  PAINT (140+(i*10+(i*20-12)),(ver/1.58*10+(ver/2*20-12)+5)),11,1
  207.  NEXT i
  208.  
  209.  IF schwarz>0 THEN
  210.     IF weiss=0 AND schwarz<5 THEN merkerwahl=1
  211.     FOR j=weiss+merkerwahl TO schwarz+weiss   
  212.     CIRCLE (140+(j*10+(j*20-12)),ver/1.58*10+(ver/2*20-12)+5),5,1
  213.     NEXT j
  214.  END IF
  215.  merkerwahl=0
  216.  REM //////////////////////    Auswertung     ///////////////////////
  217.  
  218.  
  219.  IF schwarz=4 THEN Richtig         
  220.  
  221.  IF versuch=10 THEN Verloren
  222.  versuch=versuch+1
  223.  LOCATE 21,20
  224.  PRINT "                  "
  225.  LOCATE 22,20
  226.  PRINT "                  "
  227.  GOTO Auswahl
  228.    
  229.     
  230.  
  231.  
  232.  
  233.  
  234. GOSUB WarteTaste
  235.  
  236. WINDOW CLOSE 2
  237. SCREEN CLOSE 1
  238.  
  239. END
  240.  
  241.  
  242. rot:
  243. PALETTE 4,.93,.2,0
  244. RETURN
  245.  
  246. himmelblau:
  247. PALETTE 0,.47,.87,1
  248. RETURN
  249.  
  250. blau:
  251. PALETTE 5,.4,.6,1
  252. RETURN
  253.  
  254. gruen:
  255. PALETTE 6,.73,.87,0
  256. RETURN
  257.  
  258. violett:
  259. PALETTE 7,1,.13,.93
  260. RETURN
  261.  
  262. grau:
  263. PALETTE 8,.73,.73,.73
  264. RETURN
  265.  
  266. braun:
  267. PALETTE 9,.8,.6,.53
  268. RETURN
  269.  
  270. schwarz:
  271. PALETTE 10,0,0,0
  272. RETURN
  273.  
  274. weiss:
  275. PALETTE 11,1,1,1
  276. RETURN
  277.  
  278. WarteTaste:
  279. w$=INKEY$
  280. IF w$="" THEN WarteTaste
  281. RETURN
  282.  
  283. Richtig:
  284. GOSUB WarteTaste
  285. CLS
  286. LOCATE 6,5
  287. PRINT "Sie haben nach dem ";versuch;".Versuch"
  288. LOCATE 7,10
  289. PRINT "richtig getippt !!!"
  290. GOTO NochmalSpielen
  291.  
  292. Verloren:
  293. CLS
  294. LOCATE 6,5
  295. PRINT "Leider konnten Sie den Code auch"
  296. LOCATE 7,5
  297. PRINT "nach dem 10.Versuch nicht knacken."
  298. GOTO NochmalSpielen
  299.  
  300.  
  301. NochmalSpielen:
  302. LOCATE 8,5
  303. PRINT "Wollen Sie nochmal spielen (J/N)?"
  304. WarteTaste1:
  305. w$=INKEY$
  306. IF w$="" THEN WarteTaste1
  307. IF w$="J" OR w$="j" THEN 
  308. WINDOW CLOSE 2
  309. SCREEN CLOSE 1
  310. GOTO Start
  311. END IF
  312. WINDOW CLOSE 2
  313. SCREEN CLOSE 1
  314. END
  315.  
  316.  
  317.